package constant

// UrlMapStatus 短链状态枚举，对应 Java 的 UrlMapStatus 枚举
type UrlMapStatus struct {
	value int16
	name  string
}

// 枚举常量定义
var (
	// UrlMapStatusAvailable 表示可用状态，对应 Java 的 AVAILABLE(1)
	UrlMapStatusAvailable = UrlMapStatus{value: 1, name: "AVAILABLE"}
	// UrlMapStatusInvalid 表示非法状态，对应 Java 的 INVALID(2)
	UrlMapStatusInvalid = UrlMapStatus{value: 2, name: "INVALID"}
)

// Value 返回状态的数值表示，对应 Java 的 getValue() 方法
func (u UrlMapStatus) Value() int16 {
	return u.value
}

// Name 返回状态的名称，便于日志和调试
func (u UrlMapStatus) Name() string {
	return u.name
}

// String 实现 Stringer 接口，方便打印输出
func (u UrlMapStatus) String() string {
	return u.name
}

// FromValue 根据数值获取对应的 UrlMapStatus
// 用于从数据库或缓存中读取数值后转换为枚举对象
func (u *UrlMapStatus) FromValue(value int) UrlMapStatus {
	switch value {
	case 1:
		return UrlMapStatusAvailable
	case 2:
		return UrlMapStatusInvalid
	default:
		// 对于未知值，可根据业务需求返回默认值或 panic
		return UrlMapStatusInvalid
	}
}
